package com.clear.creational;


/**
 * 静态内部类实现单例 todo 依靠类加载实现单例 懒加载 线程安全
 */
public class InnerSingleton {
    // 1.构造器私有化
    private InnerSingleton() {
    }

    // 2.定义静态内部类，持有实例（该类中有一个静态属性 INSTANCE）
    // todo 特性：类加载的时机 ==> 一个类会在第一被使用时被加载
    private static class InnerSingletonHolder {
        private static InnerSingleton INSTANCE = new InnerSingleton();
    }
    // 3.提供一个方法，获取单例对象
    public InnerSingleton getInstance() {   // 当第一次调用该方法时，才会在内部类加载该单例对象
        return InnerSingletonHolder.INSTANCE;
    }
}
